package ljl.alg.wangzheng_camp.round1.veryveryeasy;

public class _26_remove_duplicates {
    
    /**
     * 双指针
     * 慢 i，正常 j
     * 发现一个新的放到 i 那，i++
     * j 一直走到最后
     * <p>
     * 1 1 2
     * <p>
     * 我丢，通过了
     * 虚惊一场
     */
    public int removeDuplicates2(int[] nums) {
        int i = 0, j = 0;
        while (j < nums.length) {
            nums[i++] = nums[j];
            // j 如果和 j + 1 一样，就找到 j + 1 和 j 不同的那个 j
            while (j < nums.length - 1 && nums[j] == nums[j + 1]) j++;
            j++;
        }
        return i;
    }
    
    /**
     * 我的不错，还有种写法，我试试
     */
    public int removeDuplicates(int[] nums) {
        int i = 1, j = 1;
        // 这个写法 i 就相当于下一个要放 slow 的位置
        while (j < nums.length) {
            if (nums[j] != nums[j - 1]) {
                nums[i++] = nums[j];
            }
            j++;
        }
        return i;
    }
}
